package san.java.day13;

import java.io.*;

/**
 * 打印流:
 *  在整个IO包中, 打印流是输出信息最方便的类
 *      1. PrintStream(字节打印流)和PrintWriter(字符打印流)提供了一系列重复的print和println方法,
 *          用于多种数据类型的输出
 *      2. PrintStream和PrintWriter不会抛异常
 *      3. PrintStream和PrintWriter有自动flush功能
 *      4. System.out返回的是PrintStream的实例
 *
 * 数据流:
 *  专门用来做指定数据类型的读写的
 *      1. 用数据输出流写到文件中的基本数据类型的数据,是乱码的,不能直接辨认
 *      2. 需要使用数据的输入流来读取
 *          i. 读取时要按照写入的顺序读取
 */

public class PrintStreamAndDataStream_05 {

    public static void main(String[] args) {
//        try {
//            testDataOutputStream();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }

        try {
            testDataInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void testDataInputStream() throws IOException {
        DataInputStream dataInputStream = new DataInputStream(new FileInputStream("data/a7.txt"));
        boolean b = dataInputStream.readBoolean();
        System.out.println(b);
    }

    public static void testDataOutputStream() throws IOException {
        DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("data/a7.txt"));
        dataOutputStream.writeBoolean(true);
        dataOutputStream.writeBytes("你好,世界");
        dataOutputStream.flush();
        dataOutputStream.close();
    }
}
